package one;

public class Expression {
    private int num1;
    private int num2;
    private char operator;
    private int result;

    // 构造方法：初始化算式并计算结果
    public Expression(int num1, int num2, char operator) {
        this.num1 = num1;
        this.num2 = num2;
        this.operator = operator;
        this.result = calculate(); // 构造时自动计算结果
    }

    // 核心计算逻辑
    private int calculate() {
        switch (operator) {
            case '+':
                return num1 + num2;
            case '-':
                // 确保减法结果非负（符合小学练习需求）
                return num1 >= num2 ? num1 - num2 : num2 - num1;
            case '*':
                return num1 * num2;
            case '/':
                // 确保整除（避免小数），且除数不为0
                if (num2 == 0) throw new IllegalArgumentException("除数不能为0");
                // 若不能整除，交换操作数（保证结果为整数）
                return num1 % num2 == 0 ? num1 / num2 : num2 / num1;
            default:
                throw new IllegalArgumentException("不支持的运算符：" + operator);
        }
    }

    // 格式化算式（如 "3 + 5 = 8"）
    @Override
    public String toString() {
        return num1 + " " + operator + " " + num2 + " = " + result;
    }

    // 供单元测试获取结果
    public int getResult() {
        return result;
    }
}
